home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Demos
/
A.D. Software
/
OOFILE
/
Buildable, limited OOFILE
/
source
/
GUI
/
zApp-old
/
oofzapp.hpp
< prev
next >
Wrap
Text File
|
1995-06-04
|
10KB
|
355 lines
#ifndef H_OOFzApp
#define H_OOFzApp
// COPYRIGHT 1994 A.D. Software, All rights reserved
// zApp Integration layer of OOFILE database
// NOTE inline definitions included at end of this header file
#include "OOF1.hpp"
#include "zapp.hpp"
#include <intpack\zip.hpp>
#include "zvbx.hpp"
#include "sspp.h"
char* newFileNameFromPath(const char*);
class SSTable_Sheet;
class SSTable : public CVBControl {
public:
SSTable(zWindow*, zSizer*, int id_, DWORD=0);
SSTable(zFrameWin*, int id_);
virtual ~SSTable();
unsigned long countRowsSelected();
unsigned long selectedRow();
virtual unsigned long appendBlankRow();
void setRowColor(long newColor);
virtual long eventVBX(zVBXEvent *);
void selectCol(unsigned int theCol);
void selectRow(unsigned int theRow);
// Spread Events
virtual void receiveDoubleClick(long Col, long Row) {};
virtual void enterRow(long Row) {};
virtual void leaveModifiedCell(long Col, long Row) {};
SSTable_Sheet* mSheet; // owned
protected:
long mCurRow;
};
class SSTable_Sheet : public CSpreadSheet
{
public:
SSTable_Sheet(SSTable *tbl) :
CSpreadSheet(tbl),
mTable(tbl),
mCurRow(0)
{};
virtual ~SSTable_Sheet() {};
private:
void operator=(const SSTable_Sheet&) { assert(0); };
public:
void selectCol(unsigned int theCol);
void selectRow(unsigned int theRow);
//
// Spread Events
//
virtual void DblClick(long Col, long Row);
virtual void EditMode(long Col, long Row, int Mode, int ChangeMade);
private:
SSTable *mTable;
unsigned int mCurRow;
};
class dbSSViewTable : public SSTable {
public:
dbSSViewTable(zWindow*,zSizer*,int id_,dbView&, DWORD=WS_BORDER|LBS_NOTIFY|LBS_SORT|LBS_NOINTEGRALHEIGHT|WS_VSCROLL);
dbSSViewTable(zFrameWin*, int id_, dbView&);
virtual ~dbSSViewTable() {};
void loadEntireTable();
void addRowFromCurrentRecord();
void redrawCurrentRecord(long newColor=RGB(0, 0, 0));
short cellTypeOfField(dbField*);
void colTypeIsDate(const int colNum, const char* minDate=0, const char* maxDate=0);
void colTypeIsCheck(const int colNum);
void colTypeIsCombo(const int colNum, const char* comboString);
void colWrapsText(const int colNum);
void setCellTypeForField(dbField*);
protected:
void SetColsFromView();
void SetColHeadingsFromView();
void SetColWidthsFromView();
virtual void SetupSheet()=0;
protected:
dbView mFields;
};
class dbEditMgr;
class dbSSBrowseTable : public dbSSViewTable {
public:
dbSSBrowseTable(zWindow*,zSizer*,int id_, dbEditMgr*, dbView&, DWORD=WS_BORDER|LBS_NOTIFY|LBS_SORT|LBS_NOINTEGRALHEIGHT|WS_VSCROLL);
dbSSBrowseTable(zFrameWin*, int id_, dbEditMgr*, dbView&);
virtual ~dbSSBrowseTable() {};
virtual int size(zSizeEvt*);
virtual void receiveDoubleClick(long Col, long Row);
void selectFirst();
void selectNext();
void selectPrev();
void selectLast();
protected:
virtual void SetupSheet();
private:
dbEditMgr* mEditMgr; // may be passed in zero
};
class dbSSEditTable : public dbSSViewTable {
public:
dbSSEditTable(zFrameWin*, int id_, dbView&);
virtual ~dbSSEditTable() {};
virtual unsigned long appendBlankRow();
virtual void enterRow(long Row);
virtual void leaveModifiedCell(long Col, long Row);
protected:
virtual void SetupSheet();
};
class dbzListBrowseTable : public zListBox {
public:
dbzListBrowseTable(zWindow*,zSizer*,int id_,dbView&, DWORD=WS_BORDER|LBS_NOTIFY|LBS_SORT|LBS_NOINTEGRALHEIGHT|WS_VSCROLL);
void loadEntireTable();
protected:
dbView mFields;
};
class OOF_MixEditPage;
class dbEditMgr : public dbClass {
public:
dbEditMgr();
virtual void leavingPage(zVBXFormDialog*);
virtual void newRecord();
virtual void startPageTransition(zCommandEvt* ev);
virtual void completePageTransition(zVBXFormDialog* newDialog, const int newPageMenuItemNum=0); // leave out to avoid ticking
virtual void saveRecord(); // override to do complex save
virtual void saveAsText(char* fileName);
zFont* enableDefEditFont();
void appendPage(OOF_MixEditPage*); // called on creation of new pages - we assume they are all deleted together
// blank virtuals for possible browser - OVERRIDE IF YOU WANT ACTION!
virtual void doubleClickedBrowser(long row) {};
virtual void browserSelectFirst() {};
virtual void browserSelectNext() {};
virtual void browserSelectPrev() {};
virtual void browserSelectLast() {};
virtual void firstRecord();
virtual void nextRecord();
virtual void prevRecord();
virtual void lastRecord();
protected:
void MainTable(dbTable* tbl);
void DatabaseConnection(dbConnect* db);
virtual void UpdateDisplayForEditedRecord();
virtual void InvalidateAllPages();
// data storage
int mCurrPageCommandNum;
zMenu* mMenu;
bool mEditing, mChangingPages, mNew;
zVBXFormDialog* mCurrDialog;
zFontSpec mDefEditFontSpec;
OOF_ExpandableLongArray mPages;
// copies of what are probably members of the subclass used to manage the output
// list or other database front-end. We need these so we can provide default
// behaviour here in the mixin, that can be overridden if absolutely needed
// but is useful from day one.
dbTable* mMainTable;
dbConnect* mDatabase;
private:
static dbEditMgr* sFrontmost;
static zFont* sDefEditFont;
public:
static dbEditMgr* frontmostEditMgr();
static zFont* defEditFont();
static void setDefEditFont(zFont*);
static void warnUser(ostream& os);
};
class OOF_MixEditPage
{
public:
OOF_MixEditPage(zVBXFormDialog* thisDialog, dbEditMgr* editMgr);
virtual ~OOF_MixEditPage();
void bringToFront();
void invalidatePage();
protected:
zFont* mEditFont; // owned
dbEditMgr* mEditMgr;
zVBXFormDialog* mThisDialog;
bool mValid;
};
class OOF_MixEditField {
protected:
void CompleteInit(zControl* child);
};
class zdbEditLine : public zEditLine, public OOF_MixEditField {
public:
zdbEditLine(zFrameWin* w, int id, dbChar& dest_, unsigned long flags=0);
virtual int storeData();
virtual int setToDefault();
private:
dbChar& mField;
};
class zdbEditCombo : public zComboBoxFull, public OOF_MixEditField {
public:
zdbEditCombo(zFrameWin* w, int id, dbChar& dest_, unsigned long flags=0);
virtual int storeData();
virtual int setToDefault();
private:
dbChar& mField;
};
class zdbEditDate : public zEditLine, public OOF_MixEditField {
public:
zdbEditDate(zFrameWin* w, int id, dbDate& dest_, unsigned long flags=0);
virtual int storeData();
virtual int setToDefault();
private:
dbDate& mField;
};
class zdbCharEditBox : public zEditBox, public OOF_MixEditField {
public:
zdbCharEditBox(zWindow *w,zSizer* siz,DWORD style, dbChar& dest_, int id=0);
zdbCharEditBox(zFrameWin* w,int id, dbChar& dest_, unsigned long flags=0);
virtual int storeData();
virtual int setToDefault();
private:
dbChar& mField;
};
class zdbTextEditBox : public zEditBox, public OOF_MixEditField {
public:
zdbTextEditBox(zWindow *w,zSizer* siz,DWORD style, dbText& dest_, int id=0);
zdbTextEditBox(zFrameWin* w,int id, dbText& dest_, unsigned long flags=0);
virtual int storeData();
virtual int setToDefault();
private:
dbText& mField;
};
class zdbShortEdit : public zIntEdit, public OOF_MixEditField {
public:
zdbShortEdit(zFrameWin* w,int id, dbShortInt& dest_, char *pictStr, unsigned long flags=0);
zdbShortEdit(zFrameWin* w,int id, dbShortInt& dest_, zFormatter *formatter, unsigned long flags=0);
zdbShortEdit(zFrameWin* w,int id, dbShortInt& dest_, unsigned long flags=0);
zdbShortEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbShortInt& dest_, char *pictStr, unsigned long flags);
zdbShortEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbShortInt& dest_, zFormatter *formatter, unsigned long flags);
zdbShortEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbShortInt& dest_, unsigned long flags);
virtual int storeData();
virtual int setToDefault();
private:
dbShortInt& mField;
};
class zdbLongEdit : public zLongEdit, public OOF_MixEditField {
public:
zdbLongEdit(zFrameWin* w,int id, dbLong& dest_, char *pictStr, unsigned long flags=0);
zdbLongEdit(zFrameWin* w,int id, dbLong& dest_, zFormatter *formatter, unsigned long flags=0);
zdbLongEdit(zFrameWin* w,int id, dbLong& dest_, unsigned long flags=0);
zdbLongEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbLong& dest_, char *pictStr, unsigned long flags);
zdbLongEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbLong& dest_, zFormatter *formatter, unsigned long flags);
zdbLongEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbLong& dest_, unsigned long flags);
virtual int storeData();
virtual int setToDefault();
virtual int checkData();
private:
dbLong& mField;
};
class zdbRealEdit : public zDoubleEdit, public OOF_MixEditField {
public:
zdbRealEdit(zFrameWin* w,int id, dbReal& dest_, char *pictStr, unsigned long flags=0);
zdbRealEdit(zFrameWin* w,int id, dbReal& dest_, zFormatter *formatter, unsigned long flags=0);
zdbRealEdit(zFrameWin* w,int id, dbReal& dest_, unsigned long flags=0);
zdbRealEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbReal& dest_, char *pictStr, unsigned long flags);
zdbRealEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbReal& dest_, zFormatter *formatter, unsigned long flags);
zdbRealEdit(zWindow *w,zSizer* siz, DWORD style, int id , dbReal& dest_, unsigned long flags);
virtual int storeData();
virtual int setToDefault();
private:
dbReal& mField;
};
class zdbRadioGroup : public zRadioGroup, public OOF_MixEditField {
public:
zdbRadioGroup(zFrameWin* w,int idLo, int idHi, dbShortInt& dest_);
virtual int storeData();
virtual int setToDefault();
private:
dbShortInt& mField;
};
class dbBrowseVRowModel : public zTableVirtualRowModel {
public:
dbBrowseVRowModel(dbView& fields) :
zTableVirtualRowModel(fields.count(), fields.source()->count()),
mFields(fields)
{ coverWithReadOnly(); };
virtual int discardRow(unsigned long row); // override zApp
virtual int demandLoadRow(unsigned long row); // override zApp
virtual void AppendBlankRow();
virtual void InsertBlankRow(unsigned long row);
protected:
void coverWithReadOnly();
// data storage
dbView mFields;
};
#include "OOFzApp.inl"
#endif